Wrapper class implementation code.

Once DLL is loaded, you can do whatever you need. Some stuff not implemented yet as I dont need it.
void COlyCam::LoadDLL()
{
HMODULE hModule;

    
	hModule = GetModuleHandle(DLL_NAME);
	if (hModule) {
		hLibrary=NULL;
		m_initialized=FALSE;
		return;
	}

	hLibrary = LoadLibrary(DLL_NAME ); // Load the DLL now
	if (hLibrary != NULL) {
DLL_control_lcd = (lpF6)  GetProcAddress(hLibrary, "_Cam_control_lcd@8");
//DLL_diag_lcd_disp = (lpF1)  GetProcAddress(hLibrary, "_Cam_diag_lcd_disp@4");
DLL_erase_all = (lpF1)  GetProcAddress(hLibrary, "_Cam_erase_all@0");
DLL_erase_folder = (lpF2)  GetProcAddress(hLibrary, "_Cam_erase_folder@4");
DLL_erase_last = (lpF1)  GetProcAddress(hLibrary, "_Cam_erase_last@0");
DLL_erase_opf = (lpF2)  GetProcAddress(hLibrary, "_Cam_erase_opf@4");
DLL_erase_select = (lpF2)  GetProcAddress(hLibrary, "_Cam_erase_select@4");
DLL_error = (lpF1)  GetProcAddress(hLibrary, "_Cam_error@0");
//DLL_execute_diag = (lpF1)  GetProcAddress(hLibrary, "_Cam_execute_diag@4");
DLL_format_memory_card = (lpF2)  GetProcAddress(hLibrary, "_Cam_format_memory_card@4");
DLL_get_audio = (lpF1)  GetProcAddress(hLibrary, "_Cam_get_audio@0");
DLL_get_audio_buffer = (lpF7)  GetProcAddress(hLibrary, "_Cam_get_audio_buffer@8");
DLL_get_audio_size = (lpF2)  GetProcAddress(hLibrary, "_Cam_get_audio_size@4");
DLL_get_battery_status = (lpF1)  GetProcAddress(hLibrary, "_Cam_get_battery_status@0");
DLL_get_beep_mode = (lpF1)  GetProcAddress(hLibrary, "_Cam_get_beep_mode@0");
DLL_get_cam_type = (lpF3)  GetProcAddress(hLibrary, "_Cam_get_cam_type@4");
DLL_get_cgain = (lpF1)  GetProcAddress(hLibrary, "_Cam_get_cgain@0");
DLL_get_color_bal = (lpF3)  GetProcAddress(hLibrary, "_Cam_get_color_bal@4");
DLL_get_color_mode = (lpF1)  GetProcAddress(hLibrary, "_Cam_get_color_mode@0");
DLL_get_com_handle = (lpF1)  GetProcAddress(hLibrary, "_Cam_get_com_handle@0");
DLL_get_compression = (lpF1)  GetProcAddress(hLibrary, "_Cam_get_compression@0");
DLL_get_current_setting = (lpF3)  GetProcAddress(hLibrary, "_Cam_get_current_setting@4");
DLL_get_current_setting_2 = (lpF3)  GetProcAddress(hLibrary, "_Cam_get_current_setting_2@4");
DLL_get_datablock_size = (lpF1)  GetProcAddress(hLibrary, "_Cam_get_datablock_size@0");
//DLL_get_diag_awb_info = (lpF1)  GetProcAddress(hLibrary, "_Cam_get_diag_awb_info@4");
//DLL_get_diag_buffer = (lpF1)  GetProcAddress(hLibrary, "_Cam_get_diag_buffer@4");
//DLL_get_diag_camera_info = (lpF1)  GetProcAddress(hLibrary, "_Cam_get_diag_camera_info@4");
//DLL_get_diag_info = (lpF1)  GetProcAddress(hLibrary, "_Cam_get_diag_info@4");
//DLL_get_diag_lcd_info = (lpF1)  GetProcAddress(hLibrary, "_Cam_get_diag_lcd_info@4");
//DLL_get_diag_lens_info = (lpF1)  GetProcAddress(hLibrary, "_Cam_get_diag_lens_info@4");
//DLL_get_diag_long = (lpF1)  GetProcAddress(hLibrary, "_Cam_get_diag_long@0");
DLL_get_digital_zoom = (lpF1)  GetProcAddress(hLibrary, "_Cam_get_digital_zoom@0");
DLL_get_exposure = (lpF1)  GetProcAddress(hLibrary, "_Cam_get_exposure@0");
DLL_get_exposure_bias = (lpF3)  GetProcAddress(hLibrary, "_Cam_get_exposure_bias@4");
DLL_get_flash_mode = (lpF1)  GetProcAddress(hLibrary, "_Cam_get_flash_mode@0");
DLL_get_focal_length = (lpF3)  GetProcAddress(hLibrary, "_Cam_get_focal_length@4");
DLL_get_focus = (lpF1)  GetProcAddress(hLibrary, "_Cam_get_focus@0");
DLL_get_folder_info = (lpF4)  GetProcAddress(hLibrary, "_Cam_get_folder_info@8");
DLL_get_folder_name = (lpF7)  GetProcAddress(hLibrary, "_Cam_get_folder_name@8");
DLL_get_folder_number = (lpF1)  GetProcAddress(hLibrary, "_Cam_get_folder_number@0");
DLL_get_free_mem = (lpF1)  GetProcAddress(hLibrary, "_Cam_get_free_mem@0");
//DLL_get_function_available = (lpF1)  GetProcAddress(hLibrary, "_Cam_get_function_available@4");
DLL_get_id = (lpF3)  GetProcAddress(hLibrary, "_Cam_get_id@4");
DLL_get_iso_speed_ratings = (lpF1)  GetProcAddress(hLibrary, "_Cam_get_iso_speed_ratings@0");
DLL_get_last_setting = (lpF1)  GetProcAddress(hLibrary, "_Cam_get_last_setting@0");
DLL_get_lcd = (lpF1)  GetProcAddress(hLibrary, "_Cam_get_lcd@0");
DLL_get_lcd_brightness = (lpF1)  GetProcAddress(hLibrary, "_Cam_get_lcd_brightness@0");
DLL_get_lcd_contrast = (lpF1)  GetProcAddress(hLibrary, "_Cam_get_lcd_contrast@0");
DLL_get_lcd_date_format = (lpF1)  GetProcAddress(hLibrary, "_Cam_get_lcd_date_format@0");
DLL_get_lcd_disp_direction = (lpF1)  GetProcAddress(hLibrary, "_Cam_get_lcd_disp_direction@0");
DLL_get_lcd_disp_language = (lpF1)  GetProcAddress(hLibrary, "_Cam_get_lcd_disp_language@0");
DLL_get_lcd_picture_number = (lpF1)  GetProcAddress(hLibrary, "_Cam_get_lcd_picture_number@0");
DLL_get_lcd_power_down = (lpF1)  GetProcAddress(hLibrary, "_Cam_get_lcd_power_down@0");
//DLL_get_lcd_power_down_2 = (lpF1)  GetProcAddress(hLibrary, "_Cam_get_lcd_power_down_2@8");
DLL_get_lcd_select_count = (lpF1)  GetProcAddress(hLibrary, "_Cam_get_lcd_select_count@0");
//DLL_get_lcd_select_pictures = (lpF1)  GetProcAddress(hLibrary, "_Cam_get_lcd_select_pictures@4");
DLL_get_light_source = (lpF1)  GetProcAddress(hLibrary, "_Cam_get_light_source@0");
DLL_get_maker = (lpF3)  GetProcAddress(hLibrary, "_Cam_get_maker@4");
DLL_get_memory_info = (lpF3)  GetProcAddress(hLibrary, "_Cam_get_memory_info@4");
DLL_get_memory_select = (lpF1)  GetProcAddress(hLibrary, "_Cam_get_memory_select@0");
DLL_get_memory_status = (lpF1)  GetProcAddress(hLibrary, "_Cam_get_memory_status@0");
DLL_get_metering_mode = (lpF1)  GetProcAddress(hLibrary, "_Cam_get_metering_mode@0");
DLL_get_opf_count = (lpF1)  GetProcAddress(hLibrary, "_Cam_get_opf_count@0");
//DLL_get_opf_info = (lpF1)  GetProcAddress(hLibrary, "_Cam_get_opf_info@8");
DLL_get_packet_delay = (lpF1)  GetProcAddress(hLibrary, "_Cam_get_packet_delay@0");
DLL_get_picture_audio_buffer = (lpF8)  GetProcAddress(hLibrary, "_Cam_get_picture_audio_buffer@12");
DLL_get_picture_buffer = (lpF7)  GetProcAddress(hLibrary, "_Cam_get_picture_buffer@8");
DLL_get_picture_count = (lpF1)  GetProcAddress(hLibrary, "_Cam_get_picture_count@0");
DLL_get_picture_file = (lpF6)  GetProcAddress(hLibrary, "_Cam_get_picture_file@8");
DLL_get_picture_file_name = (lpF7)  GetProcAddress(hLibrary, "_Cam_get_picture_file_name@8");
DLL_get_picture_info = (lpF4)  GetProcAddress(hLibrary, "_Cam_get_picture_info@8");
//DLL_get_picture_info_tag = (lpF1)  GetProcAddress(hLibrary, "_Cam_get_picture_info_tag@8");
DLL_get_picture_size = (lpF2)  GetProcAddress(hLibrary, "_Cam_get_picture_size@4");
DLL_get_protect_mode = (lpF2)  GetProcAddress(hLibrary, "_Cam_get_protect_mode@4");
//DLL_get_pwr_down = (lpF1)  GetProcAddress(hLibrary, "_Cam_get_pwr_down@8");
DLL_get_raw_file = (lpF6)  GetProcAddress(hLibrary, "_Cam_get_raw_file@8");
DLL_get_remaining_count = (lpF1)  GetProcAddress(hLibrary, "_Cam_get_remaining_count@0");
DLL_get_resolution = (lpF1)  GetProcAddress(hLibrary, "_Cam_get_resolution@0");
DLL_get_serial_no = (lpF3)  GetProcAddress(hLibrary, "_Cam_get_serial_no@4");
DLL_get_session_time = (lpF1)  GetProcAddress(hLibrary, "_Cam_get_session_time@0");
DLL_get_sharpness = (lpF1)  GetProcAddress(hLibrary, "_Cam_get_sharpness@0");
DLL_get_special_function = (lpF1)  GetProcAddress(hLibrary, "_Cam_get_special_function@0");
DLL_get_state = (lpF1)  GetProcAddress(hLibrary, "_Cam_get_state@0");
DLL_get_take_picture_info = (lpF3)  GetProcAddress(hLibrary, "_Cam_get_take_picture_info@4");
DLL_get_thumbnail_buffer = (lpF7)  GetProcAddress(hLibrary, "_Cam_get_thumbnail_buffer@8");
DLL_get_thumbnail_file = (lpF6)  GetProcAddress(hLibrary, "_Cam_get_thumbnail_file@8");
DLL_get_thumbnail_size = (lpF2)  GetProcAddress(hLibrary, "_Cam_get_thumbnail_size@4");
DLL_get_time = (lpF3)  GetProcAddress(hLibrary, "_Cam_get_time@4");
DLL_get_time_value = (lpF1)  GetProcAddress(hLibrary, "_Cam_get_time_value@0");
DLL_get_tone_curve = (lpF1)  GetProcAddress(hLibrary, "_Cam_get_tone_curve@0");
DLL_get_version = (lpF3)  GetProcAddress(hLibrary, "_Cam_get_version@4");
DLL_get_ygain = (lpF1)  GetProcAddress(hLibrary, "_Cam_get_ygain@0");
//DLL_load_file_data = (lpF1)  GetProcAddress(hLibrary, "_Cam_load_file_data@8");
//DLL_load_firmware = (lpF1)  GetProcAddress(hLibrary, "_Cam_load_firmware@4");
//DLL_load_opf_data = (lpF1)  GetProcAddress(hLibrary, "_Cam_load_opf_data@8");
//DLL_load_picture_data = (lpF1)  GetProcAddress(hLibrary, "_Cam_load_picture_data@8");
DLL_protect_picture = (lpF6)  GetProcAddress(hLibrary, "_Cam_protect_picture@8");
//DLL_push_comm_open = (lpF1)  GetProcAddress(hLibrary, "_Cam_push_comm_open@8");
DLL_pwr_off = (lpF1)  GetProcAddress(hLibrary, "_Cam_pwr_off@0");
DLL_ready = (lpF1)  GetProcAddress(hLibrary, "_Cam_ready@0");
//DLL_record_audio = (lpF2)  GetProcAddress(hLibrary, "_Cam_record_audio@4");
DLL_reset_dll = (lpF1)  GetProcAddress(hLibrary, "_Cam_reset_dll@0");
DLL_session_enabled = (lpF2)  GetProcAddress(hLibrary, "_Cam_session_enabled@4");
DLL_set_audio = (lpF2)  GetProcAddress(hLibrary, "_Cam_set_audio@4");
DLL_set_beep_mode = (lpF2)  GetProcAddress(hLibrary, "_Cam_set_beep_mode@4");
DLL_set_cgain = (lpF2)  GetProcAddress(hLibrary, "_Cam_set_cgain@4");
DLL_set_color_bal = (lpF2)  GetProcAddress(hLibrary, "_Cam_set_color_bal@4");
DLL_set_color_mode = (lpF2)  GetProcAddress(hLibrary, "_Cam_set_color_mode@4");
DLL_set_compression = (lpF2)  GetProcAddress(hLibrary, "_Cam_set_compression@4");
DLL_set_datablock_size = (lpF2)  GetProcAddress(hLibrary, "_Cam_set_datablock_size@4");
//DLL_set_debug = (lpF2)  GetProcAddress(hLibrary, "_Cam_set_debug@4");
//DLL_set_default_params = (lpF1)  GetProcAddress(hLibrary, "_Cam_set_default_params@4");
//DLL_set_diag_awb_info = (lpF1)  GetProcAddress(hLibrary, "_Cam_set_diag_awb_info@4");
//DLL_set_diag_buffer = (lpF1)  GetProcAddress(hLibrary, "_Cam_set_diag_buffer@8");
//DLL_set_diag_long = (lpF1)  GetProcAddress(hLibrary, "_Cam_set_diag_long@4");
DLL_set_digital_zoom = (lpF2)  GetProcAddress(hLibrary, "_Cam_set_digital_zoom@4");
DLL_set_exposure = (lpF2)  GetProcAddress(hLibrary, "_Cam_set_exposure@4");
DLL_set_exposure_bias = (lpF2)  GetProcAddress(hLibrary, "_Cam_set_exposure_bias@4");
DLL_set_flash_mode = (lpF2)  GetProcAddress(hLibrary, "_Cam_set_flash_mode@4");
DLL_set_focal_length = (lpF3)  GetProcAddress(hLibrary, "_Cam_set_focal_length@4");
DLL_set_focus = (lpF2)  GetProcAddress(hLibrary, "_Cam_set_focus@4");
DLL_set_folder_name = (lpF3)  GetProcAddress(hLibrary, "_Cam_set_folder_name@4");
DLL_set_id = (lpF3)  GetProcAddress(hLibrary, "_Cam_set_id@4");
DLL_set_iso_speed_ratings = (lpF2)  GetProcAddress(hLibrary, "_Cam_set_iso_speed_ratings@4");
DLL_set_last_setting = (lpF2)  GetProcAddress(hLibrary, "_Cam_set_last_setting@4");
DLL_set_lcd_brightness = (lpF2)  GetProcAddress(hLibrary, "_Cam_set_lcd_brightness@4");
DLL_set_lcd_contrast = (lpF2)  GetProcAddress(hLibrary, "_Cam_set_lcd_contrast@4");
DLL_set_lcd_date_format = (lpF2)  GetProcAddress(hLibrary, "_Cam_set_lcd_date_format@4");
DLL_set_lcd_disp_direction = (lpF2)  GetProcAddress(hLibrary, "_Cam_set_lcd_disp_direction@4");
DLL_set_lcd_disp_language = (lpF2)  GetProcAddress(hLibrary, "_Cam_set_lcd_disp_language@4");
DLL_set_lcd_power_down = (lpF2)  GetProcAddress(hLibrary, "_Cam_set_lcd_power_down@4");
//DLL_set_lcd_power_down_2 = (lpF1)  GetProcAddress(hLibrary, "_Cam_set_lcd_power_down_2@8");
DLL_set_lcd_string = (lpF3)  GetProcAddress(hLibrary, "_Cam_set_lcd_string@4");
DLL_set_light_source = (lpF2)  GetProcAddress(hLibrary, "_Cam_set_light_source@4");
DLL_set_memory_select = (lpF2)  GetProcAddress(hLibrary, "_Cam_set_memory_select@4");
DLL_set_metering_mode = (lpF2)  GetProcAddress(hLibrary, "_Cam_set_metering_mode@4");
DLL_set_packet_delay = (lpF2)  GetProcAddress(hLibrary, "_Cam_set_packet_delay@4");
DLL_set_port = (lpF2)  GetProcAddress(hLibrary, "_Cam_set_port@4");
//DLL_set_pwr_down = (lpF1)  GetProcAddress(hLibrary, "_Cam_set_pwr_down@8");
DLL_set_resolution = (lpF2)  GetProcAddress(hLibrary, "_Cam_set_resolution@4");
DLL_set_session_time = (lpF2)  GetProcAddress(hLibrary, "_Cam_set_session_time@4");
DLL_set_sharpness = (lpF2)  GetProcAddress(hLibrary, "_Cam_set_sharpness@4");
DLL_set_special_function = (lpF2)  GetProcAddress(hLibrary, "_Cam_set_special_function@4");
DLL_set_speed = (lpF2)  GetProcAddress(hLibrary, "_Cam_set_speed@4");
//DLL_set_take_picture_info = (lpF1)  GetProcAddress(hLibrary, "_Cam_set_take_picture_info@4");
DLL_set_time = (lpF2)  GetProcAddress(hLibrary, "_Cam_set_time@4");
DLL_set_timer_led = (lpF2)  GetProcAddress(hLibrary, "_Cam_set_timer_led@4");
//DLL_set_tone_curve = (lpF1)  GetProcAddress(hLibrary, "_Cam_set_tone_curve@4");
DLL_set_ygain = (lpF2)  GetProcAddress(hLibrary, "_Cam_set_ygain@4");
DLL_setup_callback = (lpF7)  GetProcAddress(hLibrary, "_Cam_setup_callback@8");
//DLL_setup_monitor = (lpF1)  GetProcAddress(hLibrary, "_Cam_setup_monitor@4");
//DLL_store_pic = (lpF1)  GetProcAddress(hLibrary, "_Cam_store_pic@4");
DLL_take_pic = (lpF1)  GetProcAddress(hLibrary, "_Cam_take_pic@0");
DLL_take_preview = (lpF1)  GetProcAddress(hLibrary, "_Cam_take_preview@0");
//DLL_write_loaded_data = (lpF1)  GetProcAddress(hLibrary, "_Cam_write_loaded_data@0");
//DLL_ComClose = (lpF1)  GetProcAddress(hLibrary, "_ComClose@4");
//DLL_ComGetHandle = (lpF1)  GetProcAddress(hLibrary, "_ComGetHandle@4");
//DLL_ComOpen = (lpF1)  GetProcAddress(hLibrary, "_ComOpen@32");
//DLL_ComPutc = (lpF1)  GetProcAddress(hLibrary, "_ComPutc@8");
//DLL_ComReadBufToQuiet = (lpF1)  GetProcAddress(hLibrary, "_ComReadBufToQuiet@16");
//DLL_ComReadTimed = (lpF1)  GetProcAddress(hLibrary, "_ComReadTimed@16");
//DLL_ComSetBaud = (lpF1)  GetProcAddress(hLibrary, "_ComSetBaud@8");
//DLL_ComSetFlow = (lpF1)  GetProcAddress(hLibrary, "_ComSetFlow@8");
//DLL_ComSleepMS = (lpF1)  GetProcAddress(hLibrary, "_ComSleepMS@8");
//DLL_ComUsbOpen = (lpF1)  GetProcAddress(hLibrary, "_ComUsbOpen@12");
//DLL_ComWrite = (lpF1)  GetProcAddress(hLibrary, "_ComWrite@12");
// end of init section
	DLL_reset_dll();
	}
	m_initialized=TRUE;
}
int COlyCam::dll_loaded()
{
	if (hLibrary != NULL) return TRUE;
		else return FALSE;
}

COlyCam::COlyCam()
{
	m_initialized=FALSE;
	m_port=0;  // USB
	m_speed=0; //
	LoadDLL();
	pcl = new CObList( 20);
}

COlyCam::~COlyCam()
{
	void Stop();
	if (dll_loaded()) {
		DLL_reset_dll();
		FreeLibrary( hLibrary);         // Unload DLL from memory
	}
}


// Number of Exported Functions = 0166 (decimal)
// Addr:100041C0 Ord:   1 (0001h) Name: _control_lcd@8
int COlyCam::control_lcd(int iControl, int iPicIndex)
{
	m_error = DLL_control_lcd( iControl, iPicIndex);
	m_control_lcd = iControl;
	m_control_lcd_pic = iPicIndex;
	return m_error;
}

// Addr:10004FA7 Ord:   2 (0002h) Name: _diag_lcd_disp@4
// Addr:10003E51 Ord:   3 (0003h) Name: _erase_all@0
int COlyCam::erase_all()
{
	m_error = DLL_erase_all();
	if (!m_error) m_picture_count=0; 
	return m_error; 
}

// Addr:10003C4A Ord:   4 (0004h) Name: _erase_folder@4
int COlyCam::erase_folder(int iFolder)
{
	m_error = DLL_erase_folder( iFolder);
	return m_error;
}

// Addr:10003E3B Ord:   5 (0005h) Name: _erase_last@0
int COlyCam::erase_last()
{
	m_error = DLL_erase_last();
	return m_error;
}

// Addr:1000577B Ord:   6 (0006h) Name: _erase_opf@4
int COlyCam::erase_opf(int iIndex)
{
	m_error = DLL_erase_opf( iIndex);
	return m_error;
}

// Addr:10003ED9 Ord:   7 (0007h) Name: _erase_select@4
int COlyCam::erase_select(int iPicture)
{
	m_error = DLL_erase_select( iPicture);
	return m_error;
}

// Addr:100011BE Ord:   8 (0008h) Name: _error@0
int COlyCam::error()
{
	m_error = DLL_error();
	return m_error;
}
....
To be continued.